python requests模块调用API

import requests
import json

 

 

执行WEB API,适合参数多且无需先登录的单个API
# method:API的调用方法,支持 get 和 post 方法
# url:入参,API地址
# params:url中的参数及值,如 params = {'key1': 'value1', 'key2': 'value2', 'key3': value3}
# 返回值:返回API的执行结果值
def web_api_withMethod(method, url, params):
    headers = {
"User-Agent""Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
               
"Accept""text/plain"'Connection''close'}
    
if method == 'get':
        
try:
            r = requests.get(url, 
params=params, headers=headers, timeout=120)
        
except requests.ReadTimeout, requests.ConnectTimeout:
            r = 
'Timeout'
    
elif method == 'post':
        r = requests.post(url, 
data=params, headers=headers, timeout=120)
    
else:
        r = {
'error''不被接受的方法,只支持get或post'}
    
try:
        is_json = json.loads(r.text)
    
except(TypeErrorValueError):
        is_json = 
False
    if 
is_json:
        
return json.loads(r.text)
    
else:
        
return r.text.encode('utf-8')

# web_api_withMethod 调用实例

api_url="http://xxxxxx/webapi/API_QueryUserInfo"

params = {

          'loginAccount': 'test1',
          'loginPassword': 'test1'
          }

r = web_api_withMethod("get",api_url,params) #采用get方法
r = web_api_withMethod("post",api_url,params) #采用post方法

 

 

执行WEB API,如果API要求先登录,则传入login_url参数即可
# login_url:用于登录的API,完整的URL
# api_url:用于测试的API地址,包括参数的完整URL
# 返回值:返回API的执行结果值
def web_api_withLogin(login_url='',api_url=''):
    headers = {
"User-Agent""Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
               
"Accept""text/plain",'Connection''close'}
    v = requests.Session()
    r = {
'data':'error'}
    
if login_url != '':
        v.get(login_url, 
headers=headers)
        
if api_url != '':
            r = v.get(api_url, 
headers=headers)
    
return json.loads(r.text)

 

#调用

api_login = "http://xxx/webapi/xx/xx?loginAccount=xx&loginPassword=xx"
api_url2 = "http://xxx/webapi/xx/xxx?id=xxx"
r = web_api_withLogin (api_login,api_url2)
这里我们想要调用的接口是api_url2,但这个接口不能直接调用,需要先登录,才能调用。
所以用到session来保存状态。


该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友

 

 

粤ICP备19116230号
友情链接: 码农藏书阁 天天链